package cockroachdb

var (
	// sqlKeywords is a reference of all of the keywords that we do not allow for use as the table name
	// Referenced from:
	// https://www.cockroachlabs.com/docs/stable/keywords-and-identifiers.html#identifiers
	// -> https://www.cockroachlabs.com/docs/stable/keywords-and-identifiers.html#keywords
	// -> https://www.cockroachlabs.com/docs/stable/sql-grammar.html
	sqlKeywords = map[string]bool{
		// reserved_keyword
		// https://www.cockroachlabs.com/docs/stable/sql-grammar.html#reserved_keyword
		"ALL":               true,
		"ANALYSE":           true,
		"ANALYZE":           true,
		"AND":               true,
		"ANY":               true,
		"ARRAY":             true,
		"AS":                true,
		"ASC":               true,
		"ASYMMETRIC":        true,
		"BOTH":              true,
		"CASE":              true,
		"CAST":              true,
		"CHECK":             true,
		"COLLATE":           true,
		"COLUMN":            true,
		"CONCURRENTLY":      true,
		"CONSTRAINT":        true,
		"CREATE":            true,
		"CURRENT_CATALOG":   true,
		"CURRENT_DATE":      true,
		"CURRENT_ROLE":      true,
		"CURRENT_SCHEMA":    true,
		"CURRENT_TIME":      true,
		"CURRENT_TIMESTAMP": true,
		"CURRENT_USER":      true,
		"DEFAULT":           true,
		"DEFERRABLE":        true,
		"DESC":              true,
		"DISTINCT":          true,
		"DO":                true,
		"ELSE":              true,
		"END":               true,
		"EXCEPT":            true,
		"FALSE":             true,
		"FETCH":             true,
		"FOR":               true,
		"FOREIGN":           true,
		"FROM":              true,
		"GRANT":             true,
		"GROUP":             true,
		"HAVING":            true,
		"IN":                true,
		"INITIALLY":         true,
		"INTERSECT":         true,
		"INTO":              true,
		"LATERAL":           true,
		"LEADING":           true,
		"LIMIT":             true,
		"LOCALTIME":         true,
		"LOCALTIMESTAMP":    true,
		"NOT":               true,
		"NULL":              true,
		"OFFSET":            true,
		"ON":                true,
		"ONLY":              true,
		"OR":                true,
		"ORDER":             true,
		"PLACING":           true,
		"PRIMARY":           true,
		"REFERENCES":        true,
		"RETURNING":         true,
		"SELECT":            true,
		"SESSION_USER":      true,
		"SOME":              true,
		"SYMMETRIC":         true,
		"TABLE":             true,
		"THEN":              true,
		"TO":                true,
		"TRAILING":          true,
		"TRUE":              true,
		"UNION":             true,
		"UNIQUE":            true,
		"USER":              true,
		"USING":             true,
		"VARIADIC":          true,
		"WHEN":              true,
		"WHERE":             true,
		"WINDOW":            true,
		"WITH":              true,

		// cockroachdb_extra_reserved_keyword
		// https://www.cockroachlabs.com/docs/stable/sql-grammar.html#cockroachdb_extra_reserved_keyword
		"INDEX":   true,
		"NOTHING": true,

		// type_func_name_keyword
		// https://www.cockroachlabs.com/docs/stable/sql-grammar.html#type_func_name_keyword
		"COLLATION": true,
		"CROSS":     true,
		"FULL":      true,
		"INNER":     true,
		"ILIKE":     true,
		"IS":        true,
		"ISNULL":    true,
		"JOIN":      true,
		"LEFT":      true,
		"LIKE":      true,
		"NATURAL":   true,
		"NONE":      true,
		"NOTNULL":   true,
		"OUTER":     true,
		"OVERLAPS":  true,
		"RIGHT":     true,
		"SIMILAR":   true,
		"FAMILY":    true,

		// col_name_keyword
		// https://www.cockroachlabs.com/docs/stable/sql-grammar.html#col_name_keyword
		"ANNOTATE_TYPE":    true,
		"BETWEEN":          true,
		"BIGINT":           true,
		"BIT":              true,
		"BOOLEAN":          true,
		"CHAR":             true,
		"CHARACTER":        true,
		"CHARACTERISTICS":  true,
		"COALESCE":         true,
		"DEC":              true,
		"DECIMAL":          true,
		"EXISTS":           true,
		"EXTRACT":          true,
		"EXTRACT_DURATION": true,
		"FLOAT":            true,
		"GREATEST":         true,
		"GROUPING":         true,
		"IF":               true,
		"IFERROR":          true,
		"IFNULL":           true,
		"INT":              true,
		"INTEGER":          true,
		"INTERVAL":         true,
		"ISERROR":          true,
		"LEAST":            true,
		"NULLIF":           true,
		"NUMERIC":          true,
		"OUT":              true,
		"OVERLAY":          true,
		"POSITION":         true,
		"PRECISION":        true,
		"REAL":             true,
		"ROW":              true,
		"SMALLINT":         true,
		"SUBSTRING":        true,
		"TIME":             true,
		"TIMETZ":           true,
		"TIMESTAMP":        true,
		"TIMESTAMPTZ":      true,
		"TREAT":            true,
		"TRIM":             true,
		"VALUES":           true,
		"VARBIT":           true,
		"VARCHAR":          true,
		"VIRTUAL":          true,
		"WORK":             true,

		// unreserved_keyword
		// https://www.cockroachlabs.com/docs/stable/sql-grammar.html#unreserved_keyword
		"ABORT":                     true,
		"ACTION":                    true,
		"ADD":                       true,
		"ADMIN":                     true,
		"AGGREGATE":                 true,
		"ALTER":                     true,
		"AT":                        true,
		"AUTOMATIC":                 true,
		"AUTHORIZATION":             true,
		"BACKUP":                    true,
		"BEGIN":                     true,
		"BIGSERIAL":                 true,
		"BLOB":                      true,
		"BOOL":                      true,
		"BUCKET_COUNT":              true,
		"BUNDLE":                    true,
		"BY":                        true,
		"BYTEA":                     true,
		"BYTES":                     true,
		"CACHE":                     true,
		"CANCEL":                    true,
		"CASCADE":                   true,
		"CHANGEFEED":                true,
		"CLUSTER":                   true,
		"COLUMNS":                   true,
		"COMMENT":                   true,
		"COMMIT":                    true,
		"COMMITTED":                 true,
		"COMPACT":                   true,
		"COMPLETE":                  true,
		"CONFLICT":                  true,
		"CONFIGURATION":             true,
		"CONFIGURATIONS":            true,
		"CONFIGURE":                 true,
		"CONSTRAINTS":               true,
		"CONVERSION":                true,
		"COPY":                      true,
		"COVERING":                  true,
		"CREATEROLE":                true,
		"CUBE":                      true,
		"CURRENT":                   true,
		"CYCLE":                     true,
		"DATA":                      true,
		"DATABASE":                  true,
		"DATABASES":                 true,
		"DATE":                      true,
		"DAY":                       true,
		"DEALLOCATE":                true,
		"DELETE":                    true,
		"DEFERRED":                  true,
		"DISCARD":                   true,
		"DOMAIN":                    true,
		"DOUBLE":                    true,
		"DROP":                      true,
		"ENCODING":                  true,
		"ENUM":                      true,
		"ESCAPE":                    true,
		"EXCLUDE":                   true,
		"EXECUTE":                   true,
		"EXPERIMENTAL":              true,
		"EXPERIMENTAL_AUDIT":        true,
		"EXPERIMENTAL_FINGERPRINTS": true,
		"EXPERIMENTAL_RELOCATE":     true,
		"EXPERIMENTAL_REPLICA":      true,
		"EXPIRATION":                true,
		"EXPLAIN":                   true,
		"EXPORT":                    true,
		"EXTENSION":                 true,
		"FILES":                     true,
		"FILTER":                    true,
		"FIRST":                     true,
		"FLOAT4":                    true,
		"FLOAT8":                    true,
		"FOLLOWING":                 true,
		"FORCE_INDEX":               true,
		"FUNCTION":                  true,
		"GLOBAL":                    true,
		"GRANTS":                    true,
		"GROUPS":                    true,
		"HASH":                      true,
		"HIGH":                      true,
		"HISTOGRAM":                 true,
		"HOUR":                      true,
		"IMMEDIATE":                 true,
		"IMPORT":                    true,
		"INCLUDE":                   true,
		"INCREMENT":                 true,
		"INCREMENTAL":               true,
		"INDEXES":                   true,
		"INET":                      true,
		"INJECT":                    true,
		"INSERT":                    true,
		"INT2":                      true,
		"INT2VECTOR":                true,
		"INT4":                      true,
		"INT8":                      true,
		"INT64":                     true,
		"INTERLEAVE":                true,
		"INVERTED":                  true,
		"ISOLATION":                 true,
		"JOB":                       true,
		"JOBS":                      true,
		"JSON":                      true,
		"JSONB":                     true,
		"KEY":                       true,
		"KEYS":                      true,
		"KV":                        true,
		"LANGUAGE":                  true,
		"LAST":                      true,
		"LC_COLLATE":                true,
		"LC_CTYPE":                  true,
		"LEASE":                     true,
		"LESS":                      true,
		"LEVEL":                     true,
		"LIST":                      true,
		"LOCAL":                     true,
		"LOCKED":                    true,
		"LOGIN":                     true,
		"LOOKUP":                    true,
		"LOW":                       true,
		"MATCH":                     true,
		"MATERIALIZED":              true,
		"MAXVALUE":                  true,
		"MERGE":                     true,
		"MINUTE":                    true,
		"MINVALUE":                  true,
		"MONTH":                     true,
		"NAMES":                     true,
		"NAN":                       true,
		"NAME":                      true,
		"NEXT":                      true,
		"NO":                        true,
		"NORMAL":                    true,
		"NO_INDEX_JOIN":             true,
		"NOCREATEROLE":              true,
		"NOLOGIN":                   true,
		"NOWAIT":                    true,
		"NULLS":                     true,
		"IGNORE_FOREIGN_KEYS":       true,
		"OF":                        true,
		"OFF":                       true,
		"OID":                       true,
		"OIDS":                      true,
		"OIDVECTOR":                 true,
		"OPERATOR":                  true,
		"OPT":                       true,
		"OPTION":                    true,
		"OPTIONS":                   true,
		"ORDINALITY":                true,
		"OTHERS":                    true,
		"OVER":                      true,
		"OWNED":                     true,
		"PARENT":                    true,
		"PARTIAL":                   true,
		"PARTITION":                 true,
		"PARTITIONS":                true,
		"PASSWORD":                  true,
		"PAUSE":                     true,
		"PHYSICAL":                  true,
		"PLAN":                      true,
		"PLANS":                     true,
		"PRECEDING":                 true,
		"PREPARE":                   true,
		"PRESERVE":                  true,
		"PRIORITY":                  true,
		"PUBLIC":                    true,
		"PUBLICATION":               true,
		"QUERIES":                   true,
		"QUERY":                     true,
		"RANGE":                     true,
		"RANGES":                    true,
		"READ":                      true,
		"RECURSIVE":                 true,
		"REF":                       true,
		"REGCLASS":                  true,
		"REGPROC":                   true,
		"REGPROCEDURE":              true,
		"REGNAMESPACE":              true,
		"REGTYPE":                   true,
		"REINDEX":                   true,
		"RELEASE":                   true,
		"RENAME":                    true,
		"REPEATABLE":                true,
		"REPLACE":                   true,
		"RESET":                     true,
		"RESTORE":                   true,
		"RESTRICT":                  true,
		"RESUME":                    true,
		"REVOKE":                    true,
		"ROLE":                      true,
		"ROLES":                     true,
		"ROLLBACK":                  true,
		"ROLLUP":                    true,
		"ROWS":                      true,
		"RULE":                      true,
		"SETTING":                   true,
		"SETTINGS":                  true,
		"STATUS":                    true,
		"SAVEPOINT":                 true,
		"SCATTER":                   true,
		"SCHEMA":                    true,
		"SCHEMAS":                   true,
		"SCRUB":                     true,
		"SEARCH":                    true,
		"SECOND":                    true,
		"SERIAL":                    true,
		"SERIALIZABLE":              true,
		"SERIAL2":                   true,
		"SERIAL4":                   true,
		"SERIAL8":                   true,
		"SEQUENCE":                  true,
		"SEQUENCES":                 true,
		"SERVER":                    true,
		"SESSION":                   true,
		"SESSIONS":                  true,
		"SET":                       true,
		"SHARE":                     true,
		"SHOW":                      true,
		"SIMPLE":                    true,
		"SKIP":                      true,
		"SMALLSERIAL":               true,
		"SNAPSHOT":                  true,
		"SPLIT":                     true,
		"SQL":                       true,
		"START":                     true,
		"STATISTICS":                true,
		"STDIN":                     true,
		"STORE":                     true,
		"STORED":                    true,
		"STORING":                   true,
		"STRICT":                    true,
		"STRING":                    true,
		"SUBSCRIPTION":              true,
		"SYNTAX":                    true,
		"SYSTEM":                    true,
		"TABLES":                    true,
		"TEMP":                      true,
		"TEMPLATE":                  true,
		"TEMPORARY":                 true,
		"TESTING_RELOCATE":          true,
		"TEXT":                      true,
		"TIES":                      true,
		"TRACE":                     true,
		"TRANSACTION":               true,
		"TRIGGER":                   true,
		"TRUNCATE":                  true,
		"TRUSTED":                   true,
		"TYPE":                      true,
		"THROTTLING":                true,
		"UNBOUNDED":                 true,
		"UNCOMMITTED":               true,
		"UNKNOWN":                   true,
		"UNLOGGED":                  true,
		"UNSPLIT":                   true,
		"UNTIL":                     true,
		"UPDATE":                    true,
		"UPSERT":                    true,
		"UUID":                      true,
		"USE":                       true,
		"USERS":                     true,
		"VALID":                     true,
		"VALIDATE":                  true,
		"VALUE":                     true,
		"VARYING":                   true,
		"VIEW":                      true,
		"WITHIN":                    true,
		"WITHOUT":                   true,
		"WRITE":                     true,
		"YEAR":                      true,
		"ZONE":                      true,
	}
)
